<?php

namespace App\Http\Requests\Admin\CollPlace;
use App\Http\Requests\Request;
use App\Models\Admin\CollPlace;
use Validator;

class UpdateRequest extends Request{
    public function authorize(){
        return true;
    }
    public function rules(){
        //添加编码判断
        Validator::extend('check_place_cid', function($attribute, $value, $parameters) {
            $pid = $parameters[0];
            if(substr($value,0,6)!=$pid){
                return false;
            }else{
                return true;
            }
        });
        //添加编码排序判断
        Validator::extend('check_place_sort', function($attribute, $value, $parameters) {
            $pid = $parameters[0];
            $id = $parameters[1];
            if($value!=0){
                $CollPlaceSort = CollPlace::where('pid',$pid)->where('id','!=',$id)->pluck('sort')->toArray();
                if(in_array($value,$CollPlaceSort)){
                    return false;
                }else{
                    return true;
                }
            }else{
                return true;
            }
        });
        return [
            'province' => 'required',
            'area' => 'required',
            'city' => 'required',
            'name' => 'required',
            'cid'=>'required|integer|max:99999999|min:10000000|unique:coll_place,cid,'.$this->id.'|check_place_cid:'.$this->pid,
            'pid' => 'required|integer',
            'longitude' => 'required|numeric',
            'latitude' => 'required|numeric',
            'sort'=>'check_place_sort:'.$this->pid.','.$this->id
        ];
    }
    public function messages(){
        return [
            'province.required' => '省份必须选择',
            'area.required' => '地级市必须选择',
            'city.required' => '县/市/区必须选择',
            'name.required' => '地标名称必须填写',
            'cid.required' => '地标编码必须填写',
            'cid.integer' => '地标编码必须是一个整数',
            'cid.max' => '地标编号必须以当前县市区开头的8位数',
            'cid.min' => '地标编号必须以当前县市区开头的8位数',
            'cid.unique' => '地标编码已经存在',
            'cid.check_place_cid' => '地标编码和县级市不匹配',
            'pid.required' => '地标父级编码必须填写',
            'pid.integer' => '地标父级编码必须是一个整数',
            'longitude.required' => '地标经度不能为空',
            'longitude.numeric' => '地标经度必须是一个数值',
            'latitude.required' => '地标纬度不能为空',
            'latitude.numeric' => '地标纬度必须是一个数值',
            'sort.check_place_sort'=>'地标排序已经存在'
        ];
    }
}